#include "ArmeSecondaire.h"
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>

void initArmeSecondaire (ArmeSecondaire* parme_secondaire, int type)
{
	assert (parme_secondaire != NULL);
	if (type == 0)
	{
		parme_secondaire->munition_secondaire = 2;
		parme_secondaire->degat_arme_secondaire = 100;
	}
	else
	{
		parme_secondaire->munition_secondaire = 0;
		parme_secondaire->degat_arme_secondaire = 2000;
	}
}

ArmeSecondaire* creerArmeSecondaire (int type)
{
	ArmeSecondaire* parme_secondaire = (ArmeSecondaire*)malloc(sizeof(ArmeSecondaire));
	initArmeSecondaire (parme_secondaire, type);
	return parme_secondaire;
}

void libereArmeSecondaire (ArmeSecondaire* parme_secondaire)
{
	assert (parme_secondaire != NULL);
	parme_secondaire->munition_secondaire = 0;
	parme_secondaire->degat_arme_secondaire = 0;
}

void detruireArmeSecondaire (ArmeSecondaire** pparme_secondaire)
{
	assert (*pparme_secondaire != NULL && pparme_secondaire!=NULL);
	libereArmeSecondaire (*pparme_secondaire);
	free(*pparme_secondaire);
	*pparme_secondaire = NULL;
}  

TypeArmeSecondaire getTypeArmeSecondaire (const ArmeSecondaire* parme_secondaire)
{
	assert (parme_secondaire != NULL);
	return parme_secondaire->type_arme_secondaire;
}

int getMunitions (const ArmeSecondaire* parme_secondaire)
{
	assert (parme_secondaire != NULL);
	return parme_secondaire->munition_secondaire;
}

void setMunitions (ArmeSecondaire* parme_secondaire, const int munition_second)
{
	assert (parme_secondaire != NULL && munition_second >= 0);
	parme_secondaire->munition_secondaire = munition_second;
}

int getDegatArmeSecondaire (const ArmeSecondaire* parme_secondaire)
{
	assert (parme_secondaire != NULL);
	return parme_secondaire->degat_arme_secondaire;
}

void setDegatArmeSecondaire (ArmeSecondaire* parme_secondaire, const int degat)
{
	assert (parme_secondaire != NULL && degat > 0);
	parme_secondaire->degat_arme_secondaire = degat;
}

/**@brief Cette procedure permet de tester toutes les fonctions du module*/
void testRegressionArmeSecondaire ()
{
	
	ArmeSecondaire* parme_s = creerArmeSecondaire(0);
	int mun = 10;
	int dgt = 5;
	
	setDegatArmeSecondaire (parme_s, dgt);
	setMunitions (parme_s, mun);
	
	int dgttest = getDegatArmeSecondaire (parme_s);
	int muntest = getMunitions (parme_s);
	
	if (mun == muntest)
		printf("set/getMunitions fonctionne \n");
	else
		printf("set/getMunitions ne fonctionne pas \n");
	
	if (dgt == dgttest)
		printf("set/getDegatArmeSecondaire fonctionne \n");
	else
		printf("set/getDegatArmeSecondaire ne fonctionne pas \n");
	
	detruireArmeSecondaire(&parme_s);
	if (parme_s == NULL)
		printf("Detruire fonctionne \n");
	else
		printf("Detruire memoire ne fonctionne pas \n");
}
